package com.example.dao;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;

import static org.junit.jupiter.api.Assertions.*;

import java.sql.SQLException;

/**
 * GoodsDao单元测试类
 * 测试重点：getCountOfGoodsByTypeID方法的分支逻辑
 */
class GoodsDaoTest1 {
    private GoodsDao goodsDao;

    @BeforeEach
    void setUp() {
        goodsDao = new GoodsDao();
    }

    /**
     * 测试获取全部商品数量的场景（typeID=0）
     */
    @Test
    void getCountOfGoodsByTypeID_AllTypes() throws SQLException {
        int result = goodsDao.getCountOfGoodsByTypeID(0);
        assertTrue(result >= 0);
    }

    /**
     * 测试获取指定类型商品数量的场景（typeID=1）
     */
    @Test
    void getCountOfGoodsByTypeID_SpecificType() throws SQLException {
        int result = goodsDao.getCountOfGoodsByTypeID(1);
        assertTrue(result >= 0);
    }

    /**
     * 测试不存在的商品类型（typeID=999）
     */
    @Test
    void getCountOfGoodsByTypeID_NonExistingType() throws SQLException {
        int result = goodsDao.getCountOfGoodsByTypeID(999);
        assertEquals(0, result);
    }
    @ParameterizedTest
    @CsvSource({
            "0, 166",   // 根据实际数据库中 typeId=0 的商品总数调整
            "1, 23",    // 根据实际数据库中 typeId=1 的商品总数调整
            "999, 0"    // 不存在的类型应返回0
    })
    void getCountOfGoodsByTypeID_Parameterized(int typeId, int expected) throws SQLException {
        int actual = goodsDao.getCountOfGoodsByTypeID(typeId);
        assertEquals(expected, actual);
    }
}